﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using DevTools.FileRefresher.Properties;

namespace DevTools.FileRefresher
{
    /// <summary>
    /// 엔터티프레임워크에서 오라클을 사용할 때 비주얼 스튜디오의 버그로 설정 파일을 읽지 못하는 문제가 발생하는데, 이 툴은 설정 파일의 내용을 지웠다 다시 씀으로서 상기 버그를 우회하는 역할을 함.
    /// </summary>
    class Program
    {
        private const string Message = "작업이 완료되었습니다. {0}초 후 창을 닫습니다.";

        static void Main(string[] args)
        {
            string[] files = Settings.Default.Files.Split(';');

            foreach (var file in files)
            {
                Console.WriteLine(string.Format("{0} 파일의 내용을 지운 후 다시 씁니다.", file));

                try
                {
                    Refresh(file);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(string.Format("{0} 파일을 처리하는 중 에러가 발생하였습니다.", file));
                    Console.WriteLine(ex.Message);
                }
            }

            int countDown = Settings.Default.CountDown > 3 ? 3 : Settings.Default.CountDown;

            for (int i = countDown; i > 0; i--)
            {
                Console.WriteLine(string.Format(Message, i));
                Thread.Sleep(1000);    
            }
        }

        private static void Refresh(string file)
        {
            string content = File.ReadAllText(file, Encoding.UTF8);

            File.WriteAllText(file, "temp", Encoding.UTF8);
            File.WriteAllText(file, content, Encoding.UTF8);
        }
    }
}
